package com.lzl.edu.controller.file;

import com.lzl.edu.utils.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import java.io.File;
import java.io.IOException;

/**
 * <h3>lzl_ws</h3>
 * <p>对前端文件的控制类</p>
 *
 * @author : 黎钟龙
 * QQ:1661548820
 * Mail：1661548820@qq.com
 * @date : 2022-03-31 15:52
 **/
@Controller
@Slf4j
//@RestController
@RequestMapping("/file")
public class FileController {

    @PostMapping("/upload")
    public String upload(@RequestParam("upFile") MultipartFile file, Model model){
        log.debug("----------文件上传开始----------");
//        判断上传的文件是否为空
        if (file.isEmpty()){
            throw new RuntimeException("未选择文件");
        }
//        不为空
//        获取文件名字
        String fileName=file.getOriginalFilename();
//        获取文件后缀
        String suffixStr = StringUtil.getSuffixStr(fileName);
//        指定文件上传本地的路径
        String upPath="E://tmp//";
//        使用随机序列作为文件的名字
        String randomSequence = StringUtil.getRandomSequence();
//        拼接文件名
        String fullFileName=upPath+randomSequence+suffixStr;
//        创建File（文件夹）对象，存储文件
        File localDirs=new File(fullFileName);
//        如果文件夹不存在
        if (!localDirs.getParentFile().exists()){
            localDirs.mkdirs();
        }
//        把文件放入到磁盘
        try {
//           把文件写入磁盘
            file.transferTo(localDirs);
//            返回文件名作为回显
            model.addAttribute("fileName","/tmp/"+randomSequence+suffixStr);
            log.debug("上传文件成功");
        } catch (IOException e) {
            log.debug("上传文件失败");
            throw new RuntimeException(e.getCause());
        }
        log.debug("----------文件上传结束----------");
        return "file/show";
    }
//
//    @PostMapping("/upload")
//    public ModelAndView upload(@RequestParam("upFile") MultipartFile file){
//        log.debug("----------文件上传开始----------");
//        ModelAndView mv=new ModelAndView();
////        判断上传的文件是否为空
//        if (file.isEmpty()){
//            throw new RuntimeException("未选择文件");
//        }
////        不为空
////        获取文件名字
//        String fileName=file.getOriginalFilename();
////        获取文件后缀
//        String suffixStr = StringUtil.getSuffixStr(fileName);
////        指定文件上传本地的路径
//        String upPath="E://tmp//";
////        使用随机序列作为文件的名字
//        String randomSequence = StringUtil.getRandomSequence();
////        拼接文件名
//        String fullFileName=upPath+randomSequence+suffixStr;
////        创建File（文件夹）对象，存储文件
//        File localDirs=new File(fullFileName);
////        如果文件夹不存在
//        if (!localDirs.getParentFile().exists()){
//            localDirs.mkdirs();
//        }
////        把文件放入到磁盘
//        try {
////           把文件写入磁盘
//            file.transferTo(localDirs);
////            返回文件名作为回显
//            mv.addObject("fileName","/tmp/"+randomSequence+suffixStr);
//            log.debug("上传文件成功");
//        } catch (IOException e) {
//            log.debug("上传文件失败");
//            throw new RuntimeException(e.getCause());
//        }
//        mv.setViewName("/file/show");
//        log.debug("----------文件上传结束----------");
//        return mv;
//    }
}
